package com.yboot.module.system.service;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.yboot.module.system.model.dto.SysMenuDto;
import com.yboot.module.system.model.entity.SysMenuEntity;
import com.yboot.module.system.model.query.SysMenuQuery;
import com.yboot.module.system.model.vo.menu.MetaVo;
import com.yboot.module.system.model.vo.SysMenuDetailVo;
import com.yboot.module.system.model.vo.SysMenuVo;
import com.yboot.module.system.model.vo.menu.RouterVo;
import com.yboot.starter.mybatis.core.base.service.IBaseService;

import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

/**
 * 菜单表
 * @author yangcs
 * @date 2025-08-29
 */
public interface ISysMenuService  extends IBaseService<SysMenuEntity, SysMenuVo, SysMenuDetailVo, SysMenuQuery, SysMenuDto> {

    default Set<String> getPermissionSet(String userId) {
        return getByUserId(userId).stream().map(SysMenuVo::getPermission).collect(Collectors.toSet());
    }

    List<SysMenuVo> getByUserId(String userId);

    List<SysMenuVo> getMenuTreeByUserId(String userId);

    List<RouterVo> buildMenus(List<SysMenuVo> menus);
}
